﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;

namespace blacksoft.Models
{
    public class ART_Venta
    {
        
        public ART_Venta()
        {
            this.MontoDescuento = 0;
            this.MontoDolares = 0;
            this.MontoNotaCredito = 0;
            this.MontoSoles = 0;
            this.MontoTarjeta = 0;
            this.Total = 0;
            this.Vuelto = 0;
            this.IDNotaCredito = 0;
            this.ClienteJ = new ART_ClienteJ();
        }
    
        public int IDVenta { get; set; }

        [Display(Name="Medio de Pago")]
        [Required(ErrorMessage = "El campo Medio de Pago es obligatorio")]
        public string MedioPago { get; set; }

        [Display(Name="Monto de Tarjeta")]
        [DataType(DataType.Currency)]
        [Required(ErrorMessage = "El campo Monto de Tarjeta es obligatorio")]
        [Range(0, 999999999, ErrorMessage = "El Monto de Tarjeta debe ser un número entero positivo de 9 dígitos máximo")]
        public Nullable<decimal> MontoTarjeta { get; set; }

        [Required(ErrorMessage = "El Nro de Nota de Crédito es obligatorio")]
        //[Range(0, 9999999999, ErrorMessage = "El Monto debe ser un número entero positivo de 10 dígitos")]
        public Nullable<int> IDNotaCredito { get; set; }

        [Display(Name = "Monto de la Nota de Crédito")]
        [DataType(DataType.Currency)]
        [Required(ErrorMessage = "El campo Monto de Nota de Credito es obligatorio")]
        [Range(0, 999999999, ErrorMessage = "El Monto de Nota de Crédito debe ser un número entero positivo de 9 dígitos máximo")]
        public Nullable<decimal> MontoNotaCredito { get; set; }

        [Display(Name = "Monto en Soles")]
        [DataType(DataType.Currency)]
        [Required(ErrorMessage = "El pago en soles es obligatorio")]
        [Range(0, 999999999, ErrorMessage = "El Monto en Soles debe ser un número entero positivo de 9 dígitos máximo")]
        public Nullable<double> MontoSoles { get; set; }

        [Display(Name = "Monto en Dólares")]
        [DataType(DataType.Currency)]
        [Required(ErrorMessage = "El pago en dólares es obligatorio")]
        [Range(0, 999999999, ErrorMessage = "El Monto en Dólares debe ser un número entero positivo de 9 dígitos máximo")]
        public Nullable<double> MontoDolares { get; set; }

        [Display(Name = "Monto de Vuelto")]
        [DataType(DataType.Currency)]
        [Required(ErrorMessage = "El campo Vuelto es obligatorio. Revisar los Montos.")]
        [Range(0, 999999999, ErrorMessage = "El Vuelto debe ser un número de 9 dígitos máximo")]
        public float Vuelto { get; set; }

        [Display(Name = "Monto de Descuento")]
        [DataType(DataType.Currency)]
        public Nullable<decimal> MontoDescuento { get; set; }

        [Display(Name = "Monto a Pagar")]
        [DataType(DataType.Currency)]
        public Nullable<decimal> Total { get; set; }

        public virtual ART_ClienteJ ClienteJ { get; set; } //artificial
    }

    public class ART_ClienteJ
    {
       public ART_ClienteJ()
        {
            this.RUC = null;
        }
    
        public int IDClienteJ { get; set; }

        //[Required(ErrorMessage = "El campo \"Razon Social\" es obligatorio")]
        [Display(Name = "Razón Social")]
        public string RazonSocial { get; set; }

        //[Required(ErrorMessage = "El campo \"RUC\" es obligatorio")]
        //[StringLength(11, MinimumLength = 11, ErrorMessage = "El RUC debe ser de 11 dígitos")]
        [Display(Name = "R.U.C.")]
        public string RUC { get; set; }

        //[Required(ErrorMessage = "El campo \"Teléfono\" es obligatorio")]
        //[Range(0,999999999,ErrorMessage = "Ingrese un número de teléfono válido")]
        [Display(Name = "Teléfono")]
        public Nullable<int> Telefono { get; set; }

        //[Required(ErrorMessage = "EL campo \"E-Mail\" es obligatorio")]
        //[EmailAddress(ErrorMessage = "Ingrese un e-mail válido")]
        [Display(Name = "E-mail")]
        public string Email { get; set; }

        //[Required(ErrorMessage = "El campos \"Dirección\" es obligatorio")]
        [Display(Name = "Dirección")]
        public string Direccion { get; set; }

    }
}


